package service;

import bean.ItemBean;
import bean.OrderBean;
import begin.UserMenu;
import dao.GeneralDao;
import dao.OrderDao;
import dao.UserDao;
import tools.UtilData;
import tools.UtilMessage;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;

/**
 * @Author 王志康
 * @Date 2021/9/6 16:19
 * @Version 1.0.0
 */
public class ShopService {
    /**
     * 购物清单结算,并计算积分
     */
    public static void settlement() {
        double allPrice = countAllPrice();
        int integral = (int) (allPrice / 10);
        new UtilMessage().messageShow("获得" + integral + "分积分");
        UserMenu.user.setIntegral(integral+UserMenu.user.getIntegral());
        //更新用户积分数据
        UserDao.updateUser(UserMenu.user);
        //添加总订单信息
        String number = UserMenu.user.getNumber();
        StringBuilder content = new StringBuilder();
        for (ItemBean item : UserMenu.listItem) {
            content.append(item.toString()).append("|");
        }
        Date date=new Date();
        OrderBean order = new OrderBean(number,content.toString(),date,integral);
        OrderDao.addOrder(order);
        UserMenu.listItem.clear();
    }

    /**
     * 计算总价格
     *
     * @return 总价格
     */
    public static double countAllPrice() {
        BigDecimal allPrice = new BigDecimal("0");
        for (ItemBean item : UserMenu.listItem) {
            allPrice = allPrice.add(BigDecimal.valueOf(item.getAllPrice()));
        }
        return allPrice.divide(new BigDecimal("1"), 2, RoundingMode.HALF_UP).doubleValue();
    }

    /**
     * 添加到购物车
     *
     * @param numberText 待转换的购买数量
     * @param id         购买物品的编号
     */
    public static void addShopCart(String numberText, String id) {
        double number;
        if (id.length() != UtilData.ID_LENGTH) {
            new UtilMessage().messageShow("请输入正确的物品编号");
            return;
        }
        try {
            number = Double.parseDouble(numberText);
        } catch (Exception e) {
            new UtilMessage().messageShow("请输入正确的物品数量");
            return;
        }
        if (GeneralDao.verification(id)) {
            double price = GeneralDao.getPrice(id);
            String name = GeneralDao.getName(id);
            //将商品订单添加至购物清单中
            UserMenu.listItem.add(new ItemBean(name, number, price));
            new UtilMessage().messageShow("订单已经成功添加");
        } else {
            new UtilMessage().messageShow("查无此物品");
        }
    }
}
